from flask import Flask, request, render_template, session
from tools import connect_database as conn

app = Flask(__name__)  # __name__参数不能是其他字符串，因为它需要满足Flask的要求，以便正确处理URL和静态文件等。如果使用其他字符串作为参数，可能会导致应用无法正常运行。
app.secret_key = 'your_secret_key_here'  # 设置一个安全的密钥

"""跳转首页"""


@app.route('/')  # 浏览器输入对应的路径，即可访问对应的方法
def hello_world():
    return render_template("index.html", session=session)


@app.route('/index.html')  # 浏览器输入对应的路径，即可访问对应的方法
def hello_index():
    return render_template("index.html", session=session)


"""注册页面"""


@app.route('/register.html')
def register():
    print(session.get("username"))
    if session.get("username") is not None:  # 如果已经登录，则无需跳转到登录页面
        print(session['username'])
        # 将username传递到loginedInfo.html，对应页面用｛｛username｝｝接收
        return render_template("loginedInfo.html", username=session.get("username"))
    return render_template("register.html")


# 接收注册用户并做  处理
@app.route('/registerHandle', methods=['GET', 'POST'])
def register_handdle():
    if request.method == 'POST':
        # 获取表单数据
        username = request.form['username']
        password = request.form['password']
        email = request.form['email']

        # 将注册信息保存到users数据库
        db_manager = conn.DatabaseManager('database/users.db')
        db_manager.initialize_db()  # 如果需要初始化数据库
        db_manager.insert_user(username, password, email)
        users = db_manager.query_data("SELECT * FROM users")
        print(users)
        db_manager.close_connection()

        return '注册成功！'  # 或者重定向到另一个页面
    else:
        # 显示注册表单
        return render_template('register.html')


"""登录页面"""


@app.route('/login.html', methods=['GET', 'POST'])
def login():
    if session.get("username") is not None:  # 如果已经登录，则无需跳转到登录页面
        return render_template("loginedInfo.html", username=session.get("username"))
    return render_template("login.html")


# 处理登录
@app.route('/loginHandle', methods=['GET', 'POST'])
def loginHandle():
    if request.method == 'POST':
        # 获取登录页面的用户名和密码
        username = request.form['username']
        password = request.form['password']
        # 拿出数据库里的用户名密码
        db_manager = conn.DatabaseManager('database/users.db')
        db_manager.initialize_db()
        users = db_manager.query_data("SELECT * FROM users")  # users数据库中的所有用户
        for user in users:
            # 检查用户名和密码是否匹配（实际应用中应使用密码散列进行比较）
            if username in user[1] and user[2] == password:
                print("登录成功")
                session["username"] = username
                session["password"] = password
                print("登录用户：" + session.get("username"))
                return render_template("loginedInfo.html",session=session,username=session.get("username"))
    return "登录失败！"


"""关于我们页面"""


@app.route('/about.html')
def about():
    print(session.get('username'))
    print(123)
    return render_template("about.html")


"""退出登录"""


@app.route('/logout', methods=['POST'])
def logout():
    # 清除session中的用户数据
    session.pop('username', None)
    print("已经退出登录")
    # 重定向到首页或登录页面
    return render_template("index.html")


"""主运行模块"""
if __name__ == '__main__':  # 确保此模块被导入时，不会被运行

    app.run(
        host='0.0.0.0')  # Flask应用默认运行在localhost的5000端口，但可以根据需要绑定其他IP地址和端口。例如，app.run(host='0.0.0.0', port=80)会使应用可通过所有IP访问，并使用80端口。
